package com.fjh.service.impl;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fjh.constant.ProdTagConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fjh.domain.ProdTag;
import com.fjh.mapper.ProdTagMapper;
import com.fjh.service.ProdTagService;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;

@Service
@Slf4j
@CacheConfig(cacheNames = "com.fjh.service.impl.ProdTagServiceImpl")
public class ProdTagServiceImpl extends ServiceImpl<ProdTagMapper, ProdTag> implements ProdTagService {

    @Autowired
    private ProdTagMapper prodTagMapper;

    /**
     * 分页查询商品的标签分组
     *
     * @param page 分页
     * @param prodTag 产品标签
     * @return
     */
    @Override
    public Page<ProdTag> loadProdTagPage(Page<ProdTag> page, ProdTag prodTag) {
        return prodTagMapper.selectPage(page, new LambdaQueryWrapper<ProdTag>()
                .eq(!ObjectUtils.isEmpty(prodTag.getStatus()), ProdTag::getStatus, prodTag.getStatus())
                .like(StringUtils.hasText(prodTag.getTitle()), ProdTag::getTitle, prodTag.getTitle())
                .orderByDesc(ProdTag::getSeq)
        );
    }

    /**
     * 新增商品
     *
     * @param prodTag
     * @return
     */
    @Override
    @CacheEvict(key = ProdTagConstant.PROD_TAG_PREFIX)
    public boolean save(ProdTag prodTag) {
        log.info("新增商品的标签分组{}", JSON.toJSONString(prodTag));
        prodTag.setCreateTime(new Date());
        prodTag.setUpdateTime(new Date());
        prodTag.setShopId(1L);
        prodTag.setIsDefault(false);
        return super.save(prodTag);
    }

    /**
     * 全查询商品的标签集合
     *
     * @return
     */
    @Override
    @CacheEvict(key = ProdTagConstant.PROD_TAG_PREFIX)
    public List<ProdTag> list() {
        return prodTagMapper.selectList(new LambdaQueryWrapper<ProdTag>()
                .eq(ProdTag::getStatus, 1)
                .orderByDesc(ProdTag::getSeq)
        );
    }
}
